package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class ProductoDAO {
	
	public ProductoDAO() {
		super();
	}

	public void registrarProducto(Producto producto) {
		String tiraSQL = "INSERT INTO producto "+"(codproducto,descripcionprod,codcategoria,fecharegistro,precio,cantidad) "+
		"VALUES "+
		 				 "('"+producto.getCodProducto()+"','"+producto.getDescripcionProd()+"','"+producto.getCodCategoria()
		 				+"','"+producto.getFechaRegistro()+"','"+producto.getPrecio()+"','"+ producto.getCantidad()+"')";
		Conexion.ejecutar(tiraSQL);
	}
	
	public List<Producto> consultarProductos() {
		List<Producto> productos = new ArrayList<Producto>();
		String tiraSQL = "SELECT * FROM producto";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				String codProducto = resultSet.getString("codproducto");
				String descripcionProducto = resultSet.getString("descripcionprod");
				String codCategoria = resultSet.getString("codcategoria");
				String fechaRegistro = resultSet.getString("fecharegistro");
				int cantidad = Integer.parseInt(resultSet.getString("cantidad"));
				float precio = resultSet.getFloat("precio");
				Producto producto = new Producto(codProducto, descripcionProducto, codCategoria,fechaRegistro, precio,cantidad);
				productos.add(producto);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return productos;
	}

	public void registrarDetalleProducto(DetalleProducto detProducto){ 
		String tiraSQL = "INSERT INTO detalleproducto "+"(codproducto,codingrediente,descripcioning,cantidading) "+
		"VALUES "+
		"('"+detProducto.getCodProducto()+"','"+ detProducto.getCodIngrediente() +"','"+detProducto.getDescripcionIng() +"','"+ detProducto.getCantidadIng() +"')";
		Conexion.ejecutar(tiraSQL);
	}

	public List<String> buscarProductosCategoria(String codCateg) {
		List<String> descripcionesProd = new ArrayList<String>();
		String descripcionProd = "";
		String tiraSQL = "SELECT descripcionprod FROM producto where codcategoria = '"+codCateg+"'";
		ResultSet resultSet = Conexion.consultar(tiraSQL);			
		try {
			while (resultSet.next()) {
	            descripcionProd = resultSet.getString("descripcionprod");
				descripcionesProd.add(descripcionProd);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return descripcionesProd;
	}
	
	public  List<String> consultarProductosNombre() {
		List<String> productos = new ArrayList<String>();
	String tiraSQL = "SELECT * From producto";
	ResultSet resultSet = Conexion.consultar(tiraSQL);		
	try {
		while (resultSet.next()) {
		     String descripcionProd = resultSet.getString("descripcionprod");
			  productos.add(descripcionProd);
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
	return productos;
    }
	
	public String buscarCodProducto(String descProd){
		boolean encontrado = false;
		String codProducto = "";
		String descripcionProd;
		String tiraSQL = "SELECT codproducto,descripcionprod FROM producto";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next() && encontrado == false ) { //Mientras el resulSet tengo otro dato haga.
				descripcionProd = resultSet.getString("descripcionprod");
				if(descProd.compareTo(descripcionProd) == 0)
				{	
				  encontrado = true;
				  codProducto = resultSet.getString("codproducto");
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return codProducto;
	}

	public List<Producto> consultarProductos2() {
		List<Producto> productos2 = new ArrayList<Producto>();
		String tiraSQL = "SELECT * FROM producto";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				String codProducto = resultSet.getString("codproducto");
				String descripcionProducto = resultSet.getString("descripcionprod");
				float precio = resultSet.getFloat("precio");
				int cantidad = Integer.parseInt(resultSet.getString("cantidad"));
				Producto producto = new Producto(codProducto, descripcionProducto,precio,cantidad);
				productos2.add(producto);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return productos2;
	}
}